/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ASAInstruction;

import ASAExpression.ASAExpr;
import exceptions.ExecutionException;

/**
 * Classe représentant l'instruction IF
 * @author D.Romain
 * @author O.Riad
 */
public class ASAInstructIf extends ASAInstruction {

    ASAExpr exprIf;
    ASAInstruction instrIf;
    ASAInstruction instrElse;

    /**
     * Constructeur du IF avec l'expression modélisant la condition
     * et l'instruction à exécuter
     * @param pExpr
     * @param pInstrIf 
     */
    public ASAInstructIf(ASAExpr pExpr, ASAInstruction pInstrIf) {
        this.exprIf = pExpr;
        this.instrIf = pInstrIf;
        this.instrElse = null;
    }

    @Override
    public int execute() throws ExecutionException {
        if (exprIf.evalue() != 0) {
            instrIf.execute();
        } else {
            if(this.instrElse != null){
                instrElse.execute();
            }
        }
        return 1;
    }

    /**
     * Permet d'ajouter un else à une instruction IF
     * @param pInstrElse 
     */
    public void addElse(ASAInstruction pInstrElse) {
        this.instrElse = pInstrElse;
    }

}
